package com.glorystone.ins.domain;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public @Data class Channel {
    /**
     * db - model
     */
    private Long tid;
    /**
     * 渠道系统账号id
     */
    private Integer userId;
    /**
     * 渠道负责人id（业务员）
     */
    private Integer masterUserId;
    /**
     * 渠道类型 类别（1个人2企业）
     */
    private Integer type;
    /**
     * 公司注册名
     */
    private String companyRegisterName;
    /**
     * 公司注册日期
     */
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate companyRegisterDate;
    /**
     * 公司营业期限开始日期
     */
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate businessStartDate;

    /**
     * 公司营业期限到期日期
     */
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate businessEndDate;

    /**
     * 公司信用代码
     */
    private String creditCode;
    /**
     * 银行账号开户名
     */
    private String accountName;

    /**
     * 银行账号
     */
    private String accountNo;
    /**
     * 银行id ，字典
     */
    private String bankName;
    /**
     * 支行名称
     */
    private String bankBranchName;
    /**
     * 支付宝
     */
    private String alipayNo;

    /**
     * 授信id
     */
    private Long creditId;
    /**
     * 微信
     */
    private String weChatNo;
    /**
     * 状态 1.新增审核中 2.新增审核驳回 3.审核通过 4. 授信审核中 5.授信审核驳回 6.已授信
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;
    /**
     * 创建人
     */
    private Long createBy;
    /**
     * 创建时间
     */
    @JsonSerialize(using = CustomLocalDateTimeSerializer.class)
    private LocalDateTime createAt;
    /**
     * 更新人
     */
    private Long updateBy;
    /**
     * 更新时间
     */
    @JsonSerialize(using = CustomLocalDateTimeSerializer.class)
    private LocalDateTime updateAt;
    private Integer delFlag;




    /**
     * params
     */
    /**
     * 负责人信息(业务员)
     */
    private SysUser masterUser;
    /**
     * 授信信息
     */
    private CreditTotal creditTotal;
    /**
     * 联系人信息
     */
    private Member contact;
    /**
     * 法人信息
     */
    private Member legalPerson;
    /**
     * 实际控制人信息
     */
    private Member actualController;
    /**
     * 高管列表
     */
    private List<Member> seniorManagerList;

    /**
     * 当前授信审批节点
     */
    private Integer nowNodeId;


    public enum TypeEnum{
        TYPE_PERSON(1, "个人渠道"),
        TYPE_COMPANY(2, "公司渠道");

        private int value;
        private String content;
        TypeEnum (int value, String content) {

            this.value = value;
            this.content = content;
        }

        public int getValue() {
            return value;
        }
        public String getContent() {
            return content;
        }
    }

    public enum StatusEnum {
        //1.新增审核中 2.新增审核驳回 3.审核通过 4. 授信审核中 5.授信审核驳回 6.已授信 7. 授信过期
        CREATE_CHANNEL(1, "审核中"),
        CHANNEL_AUDIT_REJECT(2, "审核驳回"),
        CHANNEL_AUDIT_PASS(3, "审核通过"),
        CREDIT_APPLY(4, "授信审核中"),
        CREDIT_REJECT(5, "授信审核驳回"),
        CREDIT_PASS(6, "已授信"),
        CREDIT_OVERDUE(7, "授信到期");

        private int value;
        private String content;
        StatusEnum (int value, String content) {

            this.value = value;
            this.content = content;
        }

        public int getValue() {
            return value;
        }
        public String getContent() {
            return content;
        }

    }
    private String companyName;
    private String name;

    private String jobNumber;

}